/**
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-01-19 11:43:10
 * @Description  : 用户部门操作成功后进行日志记录
 */

const { LOG_TYPE } = require('@/constants/log')
const { logRecord } = require('@/utils/logRecord')
const { getDepByIds, getCopDepByIds } = require('@/utils/getModelInfo')

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 部门创建时的日志记录，记录创建时的状态
 * @param {*} ctx
 * @param {*} next
 */
module.exports.createDepLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    const { name, pid, sizeMax, cooperatDepIds } = ctx.request.body
    const pDeps = await getDepByIds([pid])
    const copDeps = await getCopDepByIds(cooperatDepIds)
    // 进行日志记录
    await logRecord(ctx, LOG_TYPE.DEP_CREATE, {
      // 外层字段代表现如今操作实体的情况
      depId: ctx.logs.depId, // 部门ID
      // 创建时需要记录的东西（是当时的情况）
      add: {
        dep: {
          id: ctx.logs.depId,
          name,
          sizeMax
        }, // 添加时部门名称
        pDep: pDeps[0],
        cooperatDeps: copDeps // 添加时的协作ID,
      }
    })
  }
}

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 部门更新时的日志记录，需要记录哪些字段更新了
 * @param {*} ctx
 * @param {*} next
 */
module.exports.updateDepLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    const { logs } = ctx
    for (let i = 0; i < logs.length; i++) {
      // 进行日志记录
      await logRecord(ctx, LOG_TYPE.DEP_UPDATE, logs[i])
    }
  }
}

/**
 * @author: Hejh(3010733382@qq.com)
 * @description: 记录部门删除成功后日志记录
 * @param {*} ctx
 * @param {*} next
 */
module.exports.delDepLog = async (ctx, next) => {
  await next()
  const { code } = ctx.body
  if (+code === 0) {
    const { logs } = ctx
    for (let i = 0; i < logs.length; i++) {
      // 进行日志记录
      await logRecord(ctx, LOG_TYPE.DEP_DEL, logs[i])
    }
  }
}
